package edu.cibertec.sicsolutions.vfs.action;

import java.sql.Timestamp;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import edu.cibertec.sicsolutions.constants.Constants;
import edu.cibertec.sicsolutions.util.DateUtil;
import edu.cibertec.sicsolutions.vfs.domain.votacion.Consulado;
import edu.cibertec.sicsolutions.vfs.domain.votacion.Parametros;
import edu.cibertec.sicsolutions.vfs.domain.votacion.Usuario;
import edu.cibertec.sicsolutions.vfs.service.ConsuladoService;
import edu.cibertec.sicsolutions.vfs.service.ParametrosService;

public class CerrarVotacionAction extends DispatchAction{

	Integer flagPuestaCero = 0;
	public ActionForward init(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
	    
		 
		return mapping.findForward(Constants.SUCCESS_INIT);
	}
	
	public ActionForward cerrarVotacion(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		
		HttpSession session = request.getSession();
		Parametros parametro = new Parametros();
	  	parametro.setId(1);
	  	Timestamp fechaInicio =  Timestamp.valueOf(ParametrosService.getParametrosByPk(parametro).getValor() );	 
	  	parametro.setId(2);
	  	Timestamp fechaFinal =  Timestamp.valueOf(ParametrosService.getParametrosByPk(parametro).getValor() );
   	
	    if(DateUtil.getTimestampNow().before(fechaInicio)  ){
    	   request.getSession().setAttribute("msjCerrarVotacion", "La votacion todavia no ha iniciado");
    	   return mapping.findForward(Constants.SUCCESS_INIT);
        }
     
	    if(    DateUtil.getTimestampNow().after(fechaInicio) &&  DateUtil.getTimestampNow().before(fechaFinal)  ){
       	   request.getSession().setAttribute("msjCerrarVotacion", "La votacion esta en curso.Espere a que termine");
       	   return mapping.findForward(Constants.SUCCESS_INIT);
        }
		
		Usuario usuario = (Usuario)session.getAttribute("usuario");
		if(flagPuestaCero == 0  ){
			if(usuario!=null){
		     Map map = new HashMap();
		     map.put("codigo", usuario.getCodigoConsulado());
		     map.put("flagEstadoVotacion", 0); 
		     ConsuladoService.updateConsuladoByMap(map) ;
		     session.setAttribute("msjCerrarVotacion", "Se realizo el cierre con exito");}
		     flagPuestaCero = 1;
		}
		else {
			session.setAttribute("msjCerrarVotacion", "El cierre ya se realizo.Solo puede realizar  una vez");
		}
		return init(mapping, form, request, response);
	}
}
